package com.hly.musicbackground.model.music.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.hly.musicbackground.domain.SongLink;
import com.hly.musicbackground.model.music.VO.SongLinkVO;
import com.hly.musicbackground.model.music.params.SongLinkEmitParams;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

public interface SongLinkService extends IService<SongLink> {

    /**
     * 判断用户是否将歌曲加入到喜欢或歌单
     * */
    boolean isBoolean(String type, int link, int rid);


    /**
     * 获取歌单、喜欢中的歌曲
     * @param type 类型【like喜欢】【song_sheet歌单】
     * @param link 所属id（type为喜欢时link时用户id，否则为对应表的id）
     * @return List<SongLinkVO> 歌单数据
     * */
    List<SongLinkVO> getSongList(String type, int link, int page, int limit);

    /**
     * 将歌单、喜欢中的歌曲移动到新的位置
     * @param params 参数
     * */
    @Transactional
    void emitSong(SongLinkEmitParams params);

    /**
     * 删除歌单、喜欢中的歌曲
     * @param songSheetId 歌单id（当类型为喜欢时该id为用户id）
     * @param rid 歌曲的rid们
     * @param type 类型【喜欢】【歌单】
     * */
    void dels(int songSheetId, List<Integer> rid, String type);

    /**
     * 删除歌单和其中所有的歌曲
     * @param id 歌单id
     * */
    void delAllSongLink(int id, String type);

    /**
     * 获取歌单、喜欢中的歌曲数量
     * @param type 类型【歌单】【喜欢】
     * @param link 【用户id】【歌单id】
     * @return int 歌曲数量
     * */
    int countList(String type, int link);
}
